入门

1. 简介

Go语言(Golang、Golanguage)。2007年诞生,2009年11月10日开源,Google。

特点:能达到静态编译语言的安全和性能,又达到动态语言开发维护的高效率。

  1. 继承C语言的语法、调用、指针等。
  2. 引入包的概念。
  3. 垃圾自动回收。
  4. 天然支持并发。(语言层面支持;goroutine轻量级线程;CPS并发模型[Communicating Sequential Proccess])。
  5. 吸收管道通信机制channel,实现不同goroute的通信。
  6. 函数可以返回多个值。
  7. 切片slice、延时执行defer。

方向:区块链研发、服务端/游戏软件、分布式/云计算软件。

区块链:去中心化,让人人都可以成为参与数据库的建立。

  • 区块链技术,简称BT(Blockchain technology),被称之为分布式账本技术,是一种互联网数据库技术,特点是去中心化,公开透明。

2. 创始

  • Ken Thompson,1983年获得图灵奖。是C语言、B语言和Unix的主要发明人或创始者。

  • Rob Pike,贝尔实验室的Unix团队,Plan9操作系统计划成员。UTF-8编码。

  • Robert Griesemer,Java的HotSpot编译器,Chrome的JavaScript引擎V8.

3. 安装

百度。下包配变量。

brew install go

值得注意的是,GO的变量中有GOROOT指向工程文件夹,否则会报错。如果是VSCode,安装相应的插件后,可以通过虚拟环境指定该变量。

.vscode/settings.json:

{
    "go.toolsEnvVars": {
        "GOROOT": "/Users/admin/goproject"
    }
}
# 查看go的环境变量
go env
# 无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
go env -w GO111MODULE=off

4. 目录结构

admin@Mac-Pro goproject % tree
.
└── src
    └── go_code
        └── project01
            ├── main
            └── package

5 directories, 0 files

5. 上手

  1. 编写。

    main.go

    // 每个文件都必须有归属一个包
    package main
    
    // 导包
    import "fmt"
    
    // func 函数
    // main 函数入口
    func main() {
      // 使用fmt包的Print函数
        fmt.Print("hello")
    }
    
  2. 编译运行。

    有两种方式:

    • 运行go build <文件名>生成可执行文件,然后执行可执行文件。(常用)

      通过build出来会集成环境,无需安装go环境也能执行。使用-o参数可以指定输出的文件名。这里和gcc差不太多。

    • 直接运行go run <文件名>即可运行。

      使用run执行也有build过程,只不过不会输出文件,一般用于debug。类似于python。

6. 注意点

  1. Go的源文件以go为扩展名。
  2. 主函数执行入口是main函数。
  3. 严格区分大小写。
  4. 语句不需要加分号(在每句话后面默认会添加)。
  5. 是一行行编译的,不能把多个语句写在同一行内,否则报错。
  6. 如定义的变量或者import的包没有使用到,则编译时报错。
  7. 大括号成对出现。
Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2023-03-05 10:55:52

results matching ""

    No results matching ""